import Vue from 'vue'
import axios from 'axios'
import { MessageBox } from 'element-ui'
// import { delMyCookie } from '../utils/myCookie.js'
// import { clearUrl } from '../utils/getUrl.js'
import { topUrl } from '@/utils/allUrl.js'
import { setUrl, clearUrl } from '@/utils/getUrl.js'
// 引入base64
// const Base64 = require('js-base64').Base64
// import NProgress from 'nprogress' // 导入进度条

// 设置默认请求路径
axios.defaults.baseURL = topUrl
// 设置请求头
axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'
axios.defaults.headers['X-Cmmop-User-Token'] = '123'
// 设置cross跨域 并设置访问权限 允许跨域携带cookie信息
axios.defaults.withCredentials = true
// 在请求拦截器中，添加token
// const access_token = window.sessionStorage.getItem('token')
// 请求前拦截
axios.interceptors.request.use(config => {
  // 与主机相关接口需要另外加请求头
  const urlList = config.url.split('/')
  // const autoBase64 = Base64.encode('admin:public') // 账号:密码
  // console.log(autoBase64)
  urlList.forEach(item => {
    if (item === 'api') {
      // config.headers.Authorization = 'Basic ' + autoBase64
    }
  })
  // config.headers['X-Cmmop-User-Token'] = '1234'
  // const la = config.url.split('/')
  // if (la[la.length - 1] === 'userSendSmsCode') {
  //   axios.defaults.withCredentials = false
  // } else {
  //   axios.defaults.withCredentials = true
  // }
  // NProgress.start()
  // if (access_token !== null) {
  // config.headers.Authorization = access_token
  // }s
  return config
})

var num = 0
// 登陆超时计数器
var count = 0
axios.interceptors.response.use(
  config => {
    const str = 'yonghu/loginOut'
    if (config.config.url.endsWith(str)) {
    } else if (config.data.code === '0014') {
      // window.location.href = '/'
      // this.$router.push('/excel')
      // 当返回状态码为登陆超时
      count++
      // 计数器大于1次时不再弹框
      if (count > 1) {
        return
      }
      setUrl('loginTimeKey', 'loginTiemout')
      return MessageBox('您登录的时间已经超时啦！请重新登录', '确认信息', {
        confirmButtonText: '确定',
        closeOnClickModal: false,
        type: 'warning',
        center: true
      })
        .then(() => {
          window.location.href = '/'
          // delMyCookie('X-Cmmop-User-Token') // 清除cookie
          setUrl('loginTimeKey', '')
          clearUrl() // 清空缓存
        })
        .catch(() => {
          window.location.href = '/'
          // delMyCookie('X-Cmmop-User-Token') // 清除cookie
          setUrl('loginTimeKey', '')
          clearUrl() // 清空缓存
        })
    }
    // 结束进度条
    // NProgress.done()
    return config
  },
  err => {
    num++
    if (num === 1) {
      Vue.prototype.$message({
        showClose: true,
        duration: 5000,
        type: 'error',
        message: '网络错误!请检查网络环境',
        center: true
      })
    }
    return Promise.reject(err.config) // 返回接口返回的错误信息
  }
)

Vue.prototype.$http = axios
